﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SachOnlineLibrary.DAL;
using SachOnlineLibrary.Public;
using System.Data;
namespace SachOnlineLibrary.BLL
{
    public class SachBLL
    {
        SachDAL sachDAL;
        LoaiDAL loaiDAL;
        NhaXuatBanDAL nhaxuatbanDAL;
        public SachBLL()
        {
            sachDAL = new SachDAL();
            loaiDAL = new LoaiDAL();
            nhaxuatbanDAL = new NhaXuatBanDAL();
        }

        //public List<Sach> LietKeTheoID(int masach)
        //{
        //    List<Sach> listsach = new List<Sach>();
        //    DataTable dt = new DataTable();
        //    dt = sachDAL.LietKeTheoMa(masach);
        //    foreach (DataRow dr in dt.Rows)
        //    {
        //        Sach item = new Sach();
        //        item.ChuyenDoi(dr);
        //        DataRow dr1 = loaiDAL.LietKeLoaiTheoMaLoai(item.MaLoai);
        //        item.Loai.ChuyenDoi(dr1);
        //        listsach.Add(item);
        //    }
        //    return listsach;
        //} 
        public Sach LietKeTheoID(int masach)
        {
            Sach sach = new Sach();
            Loai x = new Loai();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTheoMa(masach);
            sach.ChuyenDoi(dt.Rows[0]);
            x.ChuyenDoi(loaiDAL.LietKeLoaiTheoMaLoai(sach.MaLoai));
            sach.Loai = x;
            return sach;
        }
        public List<Sach> LietKeChiTietSach(string click)
        {
            List<Sach> listchitietsach = new List<Sach>();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeChiTietSach(click);
            foreach (DataRow dr in dt.Rows)
            {
                Sach control = new Sach();
                control.ChuyenDoi(dr);
                listchitietsach.Add(control);
            }
            return listchitietsach;
        }
        public List<Sach> LietKeTatCaSach()
        {
            List<Sach> listsach = new List<Sach>();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTatCaSachCSD();
            foreach (DataRow dr in dt.Rows)
            {
                Sach item = new Sach();
                item.ChuyenDoi(dr);
                DataRow dr1 = loaiDAL.LietKeLoaiTheoMaLoai(item.MaLoai);
                item.Loai.ChuyenDoi(dr1);
                listsach.Add(item);
            }
            return listsach;
        }
        public List<Sach> TimKiem(string tenSach, int loaiSach, int trangThai)
        {
            List<Sach> listsach = new List<Sach>();
            return listsach;
        }
        public List<Sach> LietKeSachMoi()
        {
            List<Sach> listsach = new List<Sach>();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTatSachMoi();
            foreach (DataRow dr in dt.Rows)
            {
                Sach item = new Sach();
                item.ChuyenDoi(dr);
                listsach.Add(item);
            }
            return listsach;
        }
        public List<Sach> LietKeSachHot()
        {
            List<Sach> listsach = new List<Sach>();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTatSachHot();
            foreach (DataRow dr in dt.Rows)
            {
                Sach item = new Sach();
                item.ChuyenDoi(dr);
                //     DataRow dr1 = loaiDAL.LietKeLoaiTheoMaLoai(item.MaLoai);
                //    item.Loai.ChuyenDoi(dr1);
                listsach.Add(item);
            }
            return listsach;
        }
        public List<Loai> LietKeTatCaLoai()
        {
            List<Loai> listloai = new List<Loai>();
            DataTable dt = new DataTable();
            dt = loaiDAL.LietKeTatCaLoai();
            foreach (DataRow dr in dt.Rows)
            {
                Loai item = new Loai();
                item.ChuyenDoi(dr);
                listloai.Add(item);
            }
            return listloai;
        }

        public List<Sach> LietKeSachTheoLoai(int maloai)
        {
            List<Sach> listsach = new List<Sach>();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTheoLoai(maloai);
            foreach (DataRow dr in dt.Rows)
            {
                Sach item = new Sach();
                item.ChuyenDoi(dr);
                listsach.Add(item);
            }
            return listsach;
        }

        public bool ThemSach(int maloai, string tensach, string mota, long giatien, int soluong, string tacgia, string nhaxuatban, string hinh)
        {
            return sachDAL.ThemSach(maloai, tensach, mota, giatien, soluong, tacgia, nhaxuatban, DateTime.Now, hinh);
        }

        public bool SuaSach(Sach sach)
        {
            return sachDAL.SuaSach(sach.MaSach, sach.MaLoai, sach.TenSach, sach.Mota, sach.GiaTien, sach.SoLuong, sach.TacGia, sach.NhaXuatBan, sach.NgayCapNhat, sach.Hinh);
        }

        public Sach LietKeTheoTen(string tensach)
        {
            Sach sach = new Sach();
            Loai x = new Loai();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTheoTen(tensach);
            if (dt != null && dt.Rows.Count != 0)
            {
                sach.ChuyenDoi(dt.Rows[0]);
                x.ChuyenDoi(loaiDAL.LietKeLoaiTheoMaLoai(sach.MaLoai));
                sach.Loai = x;
                return sach;
            }
            return null;
        }

        public Sach LietKeSachTheoTenVaTacGia(string tensach, string tacgia)
        {
            Sach sach = new Sach();
            Loai x = new Loai();
            DataTable dt = new DataTable();
            dt = sachDAL.LietKeTheoTenVaTacGia(tensach, tacgia);
            if (dt != null && dt.Rows.Count != 0)
            {
                sach.ChuyenDoi(dt.Rows[0]);
                x.ChuyenDoi(loaiDAL.LietKeLoaiTheoMaLoai(sach.MaLoai));
                sach.Loai = x;
                return sach;
            }
            return null;
        }


    }
}
